<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div class="list">
    <li>01</li>
    <li>02</li>
    <li>03</li>
    <li>04</li>
    <li>05</li>
    <li>06</li>
    <li>07</li>
    <li>08</li>
    <li>09</li>
    <li>10</li>
  </div>
</body>
<script>
  // this  -> 函数内置的关键词  函数在调用时依存的对象
  // (1) 普通函数 (命名函数和匿名函数)   this -> window   严格模式下:undefined
  // (2) 函数在调用时 属于谁 就指向谁   obj.say  btn.onclick  Tom.say
  // (3) 箭头函数没有自己的this => 向外跳一层找父作用域  
  // (4) 构造函数中this 指向 构造函数在执行过程创建的实例化对象

  // 改变this指向的方法?  
  // call   apply   bind  => 所有的函数均可以使用

  // fn.call()  fn.apply()   借鸡生蛋 => 不影响原函数

  var liList = document.querySelectorAll(".list li");
  console.log(liList);

  // 伪数组 转 真数组 
  // var arr = Array.prototype.slice.call(liList); 
  // var arr = Array.prototype.slice.apply(liList); 
  // console.log(arr);

  // 模拟封装
  /*  Array.prototype.mySlice = function(startIndex = 0,endIndex = this.length){
      // this  -> 调用此方法的实例化对象(数组)
      var list = [];
      for(var i=startIndex;i<endIndex;i++){
          var item = this[i];
          list.push(item)
      }
      return list;
  }


  var arr = [2,8,4,6,5,7,9,3,1];
  var brr = arr.mySlice(2,5);
  console.log(brr); */

  // var min = Math.min(2,8,4,6,5,7,9,3,1);

  // 取数组中的最大值和最小值
  var arr = [2, 8, 4, 6, 5, 7, 9, 3, 1];
  // var min = Math.min(...arr);
  var min = Math.min.apply(null, arr);
  console.log(min);







</script>

</html>